package org.flexthinker.module.impl
{
    import org.flexthinker.module.Descriptor;
    import org.flexthinker.module.DescriptorLoader;
    import org.flexthinker.module.DescriptorLoaderFactory;

    /**
     * Default factory returning a DescriptorLoader per each Descriptor.
     */
    public class DescriptorLoaderFactoryImpl implements DescriptorLoaderFactory
    {
        public function DescriptorLoaderFactoryImpl()
        {
        }


        public function getLoader(descriptor:Descriptor):DescriptorLoader
        {
            if (descriptor is CompositeModuleDescriptor)
            {
                return new CompositeModuleDescriptorLoader(CompositeModuleDescriptor(descriptor), this);
            }

            if (descriptor is ModuleDescriptor)
            {
                return new ModuleDescriptorLoader(ModuleDescriptor(descriptor), this);
            }

            if (descriptor is StylesheetDescriptor)
            {
                return new StylesheetDescriptorLoader(descriptor);
            }
            if (descriptor is ResourceBundleDescriptor)
            {
//                return
            }

            // default
            return new DescriptorLoaderImpl(descriptor);

        }
    }
}